Adaptive video streaming technology is becoming more common, where video segments are encoded at a number of rates/resolutions and stored in the network at one or more servers. A client first downloads a manifest file, which describes the available rates/resolutions of each segment and where each is located (such as a content server). The client then uses the manifest together with an estimate of the bandwidth the client has available, to request appropriate segments that achieve playback of the video at an optimum quality without stalling. Perhaps the most widely adopted adaptive streaming standard at present is MPEG DASH (Dynamic Adaptive Streaming over HTTP). DASH provides a manifest in the form of a Media Presentation Description file or MPD file. Apples' adaptive video streaming technology, HLS (HTTP Live Streaming), provides a manifest in the form of a playlist file (.m3u file).
Caching is general technique than can be used to place content nearer to clients, and thus reduces the traversing clients have to make across the network to fetch content, thus reducing latency and increasing bandwidth.
Current content servers tend to cache content in CDNs (Content Delivery Networks). However, these are generally in the core of the networks and therefore the advantage of caching does not make a huge difference to video streaming. Caching saves costs in the networks for transit and reduces traffic over the core, but does not make a huge difference to the delivery to the client as the variability (especially in mobile) is likely to be towards the edge of the network.
Typically CDNs redirect content to a cache by the use of HTTP redirects. An HTTP request is first made to a central server (using the pre-fetched manifest for example), and the server then performs a lookup to find the closest cache to the client that holds the requested content. An HTTP redirect is then made to that location for the client to acquire the content.
Content can also be cached in web-browser caches on the local device. Whenever a request is made for some content, depending on the HTTP headers, that content may be cached on the local device. Alternatively, many systems use web proxies to cache content that can be served locally rather than re-connecting to the original server.
However, problems can arise with caching in an adaptive video streaming system. A client can request segment of video from a content server following a decision based on the manifest, without being aware that there might be a higher quality version in a cache that can be streamed as easily.